/*
  +----------------------------------------------------------------------+
  | PHP Version 7                                                        |
  +----------------------------------------------------------------------+
  | Copyright (c) 1997-2018 The PHP Group                                |
  +----------------------------------------------------------------------+
  | This source file is subject to version 3.01 of the PHP license,      |
  | that is bundled with this package in the file LICENSE, and is        |
  | available through the world-wide-web at the following url:           |
  | http://www.php.net/license/3_01.txt                                  |
  | If you did not receive a copy of the PHP license and are unable to   |
  | obtain it through the world-wide-web, please send a note to          |
  | license@php.net so we can mail you a copy immediately.               |
  +----------------------------------------------------------------------+
  | Author:                                                              |
  +----------------------------------------------------------------------+
*/

/* $Id$ */

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif

#include "php.h"
#include "php_ini.h"
#include "ext/standard/info.h"
#include "php_iup.h"

/* If you declare any globals in php_iup.h uncomment this:
ZEND_DECLARE_MODULE_GLOBALS(iup)
*/

/* True global resources - no need for thread safety here */
int le_iup;

int le_iup_ihandle = 0;
int le_iup_event = 0;
int is_iup_open = 0;

HashTable *iup_events;
HashTable *iup_callback;

/* {{{ PHP_INI
 */
/* Remove comments and fill if you need to have entries in php.ini
PHP_INI_BEGIN()
    STD_PHP_INI_ENTRY("iup.global_value",      "42", PHP_INI_ALL, OnUpdateLong, global_value, zend_iup_globals, iup_globals)
    STD_PHP_INI_ENTRY("iup.global_string", "foobar", PHP_INI_ALL, OnUpdateString, global_string, zend_iup_globals, iup_globals)
PHP_INI_END()
*/
/* }}} */

/* Remove the following function when you have successfully modified config.m4
   so that your module can be compiled into PHP, it exists only for testing
   purposes. */

/* Every user-visible function in PHP should document itself in the source */
/* {{{ proto string confirm_iup_compiled(string arg)
   Return a string to confirm that the module is compiled in */
PHP_FUNCTION(confirm_iup_compiled)
{
	char *arg = NULL;
	size_t arg_len;
	zend_string *strg;

	if (zend_parse_parameters(ZEND_NUM_ARGS(), "s", &arg, &arg_len) == FAILURE) {
		return;
	}

	strg = strpprintf(0, "Congratulations! You have successfully modified ext/%.78s/config.m4. Module %.78s is now compiled into PHP.", "iup", arg);

	RETURN_STR(strg);
}
/* }}} */
/* The previous line is meant for vim and emacs, so it can correctly fold and
   unfold functions in source code. See the corresponding marks just before
   function definition, where the functions purpose is also documented. Please
   follow this convention for the convenience of others editing your code.
*/

static void iup_ihandle_dtor(zend_resource *rsrc TSRMLS_DC){
  Ihandle *hd = (Ihandle *) rsrc->ptr;
  // if(hd){
  //   IupDestroy(hd);
  // }
}

static void iup_event_dtor(zend_resource *rsrc TSRMLS_DC){

}

void main(){
    return 0;
}

/* {{{ php_iup_init_globals
 */
/* Uncomment this function if you have INI entries
static void php_iup_init_globals(zend_iup_globals *iup_globals)
{
	iup_globals->global_value = 0;
	iup_globals->global_string = NULL;
}
*/
/* }}} */

/* {{{ PHP_MINIT_FUNCTION
 */
PHP_MINIT_FUNCTION(iup)
{
	/* If you have INI entries, uncomment these lines
	REGISTER_INI_ENTRIES();
	*/

    // register resource type
    le_iup_ihandle = zend_register_list_destructors_ex(iup_ihandle_dtor,NULL,"iup-handle", module_number);
    le_iup_event = zend_register_list_destructors_ex(iup_event_dtor,NULL,"iup-event", module_number);

    /************************************************************************/
    /*                                iup.h                                 */
    /************************************************************************/

    REGISTER_STRING_CONSTANT("IUP_NAME", IUP_NAME, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_DESCRIPTION", IUP_DESCRIPTION, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_COPYRIGHT", IUP_COPYRIGHT, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_VERSION", IUP_VERSION, CONST_CS | CONST_PERSISTENT);

    REGISTER_LONG_CONSTANT("IUP_VERSION_NUMBER", IUP_VERSION_NUMBER, CONST_CS | CONST_PERSISTENT);

    REGISTER_STRING_CONSTANT("IUP_VERSION_DATE", IUP_VERSION_DATE, CONST_CS | CONST_PERSISTENT);

    /************************************************************************/
    /*                   Common Flags and Return Values                     */
    /************************************************************************/
    REGISTER_LONG_CONSTANT("IUP_ERROR", IUP_ERROR, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_NOERROR", IUP_NOERROR, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_OPENED", IUP_OPENED, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_INVALID", IUP_INVALID, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_INVALID_ID", IUP_INVALID_ID, CONST_CS | CONST_PERSISTENT);

    /************************************************************************/
    /*                   Callback Return Values                             */
    /************************************************************************/
    REGISTER_LONG_CONSTANT("IUP_IGNORE", IUP_IGNORE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_DEFAULT", IUP_DEFAULT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_CLOSE", IUP_CLOSE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_CONTINUE", IUP_CONTINUE, CONST_CS | CONST_PERSISTENT);

    /************************************************************************/
    /*           IupPopup and IupShowXY Parameter Values                    */
    /************************************************************************/
    REGISTER_LONG_CONSTANT("IUP_CENTER", IUP_CENTER, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_LEFT", IUP_LEFT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_RIGHT", IUP_RIGHT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_MOUSEPOS", IUP_MOUSEPOS, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_CURRENT", IUP_CURRENT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_CENTERPARENT", IUP_CENTERPARENT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_LEFTPARENT", IUP_LEFTPARENT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_RIGHTPARENT", IUP_RIGHTPARENT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_TOP", IUP_TOP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_BOTTOM", IUP_BOTTOM, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_TOPPARENT", IUP_TOPPARENT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_BOTTOMPARENT", IUP_BOTTOMPARENT, CONST_CS | CONST_PERSISTENT);

    /************************************************************************/
    /*               SHOW_CB Callback Values                                */
    /************************************************************************/
    REGISTER_LONG_CONSTANT("IUP_SHOW", IUP_SHOW, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_RESTORE", IUP_RESTORE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_MINIMIZE", IUP_MINIMIZE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_MAXIMIZE", IUP_MAXIMIZE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_HIDE", IUP_HIDE, CONST_CS | CONST_PERSISTENT);


    /************************************************************************/
    /*               SCROLL_CB Callback Values                              */
    /************************************************************************/
    REGISTER_LONG_CONSTANT("IUP_SBUP", IUP_SBUP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_SBDN", IUP_SBDN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_SBPGUP", IUP_SBPGUP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_SBPGDN", IUP_SBPGDN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_SBPOSV", IUP_SBPOSV, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_SBDRAGV", IUP_SBDRAGV, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_SBLEFT", IUP_SBLEFT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_SBRIGHT", IUP_SBRIGHT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_SBPGLEFT", IUP_SBPGLEFT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_SBPGRIGHT", IUP_SBPGRIGHT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_SBPOSH", IUP_SBPOSH, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_SBDRAGH", IUP_SBDRAGH, CONST_CS | CONST_PERSISTENT);

    /************************************************************************/
    /*               Mouse Button Values and Macros                         */
    /************************************************************************/
    REGISTER_LONG_CONSTANT("IUP_BUTTON1", IUP_BUTTON1, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_BUTTON2", IUP_BUTTON2, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_BUTTON3", IUP_BUTTON3, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_BUTTON4", IUP_BUTTON4, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_BUTTON5", IUP_BUTTON5, CONST_CS | CONST_PERSISTENT);

    /************************************************************************/
    /*                      Pre-Defined Masks                               */
    /************************************************************************/
    REGISTER_STRING_CONSTANT("IUP_MASK_FLOAT", IUP_MASK_FLOAT, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_MASK_UFLOAT", IUP_MASK_UFLOAT, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_MASK_EFLOAT", IUP_MASK_EFLOAT, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_MASK_UEFLOAT", IUP_MASK_UEFLOAT, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_MASK_FLOATCOMMA", IUP_MASK_FLOATCOMMA, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_MASK_UFLOATCOMMA", IUP_MASK_UFLOATCOMMA, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_MASK_INT", IUP_MASK_INT, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_MASK_UINT", IUP_MASK_UINT, CONST_CS | CONST_PERSISTENT);

    REGISTER_STRING_CONSTANT("IUPMASK_FLOAT",IUPMASK_FLOAT, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUPMASK_UFLOAT",IUPMASK_UFLOAT, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUPMASK_EFLOAT",IUPMASK_EFLOAT, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUPMASK_INT",IUPMASK_INT, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUPMASK_UINT",IUPMASK_UINT, CONST_CS | CONST_PERSISTENT);

    /************************************************************************/
    /*                   IupGetParam Callback situations                    */
    /************************************************************************/
    REGISTER_LONG_CONSTANT("IUP_GETPARAM_BUTTON1", IUP_GETPARAM_BUTTON1, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_GETPARAM_INIT", IUP_GETPARAM_INIT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_GETPARAM_BUTTON2", IUP_GETPARAM_BUTTON2, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_GETPARAM_BUTTON3", IUP_GETPARAM_BUTTON3, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_GETPARAM_CLOSE", IUP_GETPARAM_CLOSE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_GETPARAM_MAP", IUP_GETPARAM_MAP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_GETPARAM_OK", IUP_GETPARAM_OK, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_GETPARAM_CANCEL", IUP_GETPARAM_CANCEL, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_GETPARAM_HELP", IUP_GETPARAM_HELP, CONST_CS | CONST_PERSISTENT);

    /************************************************************************/
    /*                   Used by IupColorbar                                */
    /************************************************************************/
    REGISTER_LONG_CONSTANT("IUP_PRIMARY", IUP_PRIMARY, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_SECONDARY", IUP_SECONDARY, CONST_CS | CONST_PERSISTENT);

    /************************************************************************/
    /*                   Record Input Modes                                 */
    /************************************************************************/
    REGISTER_LONG_CONSTANT("IUP_RECBINARY", IUP_RECBINARY, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("IUP_RECTEXT", IUP_RECTEXT, CONST_CS | CONST_PERSISTENT);

    /************************************************************************/
    /*                               iupgl.h                                */
    /************************************************************************/
    REGISTER_STRING_CONSTANT("IUP_BUFFER", IUP_BUFFER, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_STEREO", IUP_STEREO, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_BUFFER_SIZE", IUP_BUFFER_SIZE, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_RED_SIZE", IUP_RED_SIZE, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_GREEN_SIZE", IUP_GREEN_SIZE, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_BLUE_SIZE", IUP_BLUE_SIZE, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_ALPHA_SIZE", IUP_ALPHA_SIZE, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_DEPTH_SIZE", IUP_DEPTH_SIZE, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_STENCIL_SIZE", IUP_STENCIL_SIZE, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_ACCUM_RED_SIZE", IUP_ACCUM_RED_SIZE, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_ACCUM_GREEN_SIZE", IUP_ACCUM_GREEN_SIZE, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_ACCUM_BLUE_SIZE", IUP_ACCUM_BLUE_SIZE, CONST_CS | CONST_PERSISTENT);
    REGISTER_STRING_CONSTANT("IUP_ACCUM_ALPHA_SIZE", IUP_ACCUM_ALPHA_SIZE, CONST_CS | CONST_PERSISTENT);

    /************************************************************************/
    /*                               iupkey.h                                */
    /************************************************************************/
    REGISTER_LONG_CONSTANT("K_SP", K_SP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_exclam", K_exclam, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_quotedbl", K_quotedbl, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_numbersign", K_numbersign, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_dollar", K_dollar, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_percent", K_percent, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_ampersand", K_ampersand, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_apostrophe", K_apostrophe, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_parentleft", K_parentleft, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_parentright", K_parentright, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_asterisk", K_asterisk, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_plus", K_plus, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_comma", K_comma, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_minus", K_minus, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_period", K_period, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_slash", K_slash, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_0", K_0, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_1", K_1, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_2", K_2, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_3", K_3, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_4", K_4, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_5", K_5, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_6", K_6, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_7", K_7, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_8", K_8, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_9", K_9, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_colon", K_colon, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_semicolon", K_semicolon, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_less", K_less, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_equal", K_equal, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_greater", K_greater, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_question", K_question, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_at", K_at, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_A", K_A, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_B", K_B, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_C", K_C, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_D", K_D, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_E", K_E, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_F", K_F, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_G", K_G, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_H", K_H, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_I", K_I, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_J", K_J, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_K", K_K, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_L", K_L, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_M", K_M, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_N", K_N, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_O", K_O, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_P", K_P, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_Q", K_Q, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_R", K_R, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_S", K_S, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_T", K_T, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_U", K_U, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_V", K_V, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_W", K_W, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_X", K_X, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_Y", K_Y, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_Z", K_Z, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_bracketleft", K_bracketleft, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_backslash", K_backslash, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_bracketright", K_bracketright, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_circum", K_circum, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_underscore", K_underscore, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_grave", K_grave, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_a", K_a, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_b", K_b, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_c", K_c, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_d", K_d, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_e", K_e, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_f", K_f, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_g", K_g, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_h", K_h, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_i", K_i, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_j", K_j, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_k", K_k, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_l", K_l, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_m", K_m, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_n", K_n, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_o", K_o, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_p", K_p, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_q", K_q, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_r", K_r, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_s", K_s, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_t", K_t, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_u", K_u, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_v", K_v, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_w", K_w, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_x", K_x, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_y", K_y, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_z", K_z, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_braceleft", K_braceleft, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_bar", K_bar, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_braceright", K_braceright, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_tilde", K_tilde, CONST_CS | CONST_PERSISTENT);

    /* also define the escape sequences that have keys associated */
    REGISTER_LONG_CONSTANT("K_BS", K_BS, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_TAB", K_TAB, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_LF", K_LF, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_CR", K_CR, CONST_CS | CONST_PERSISTENT);

    /* These use the same definition as X11 and GDK.
       This also means that any X11 or GDK definition can also be used. */
    REGISTER_LONG_CONSTANT("K_PAUSE", K_PAUSE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_ESC", K_ESC, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_HOME", K_HOME, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_LEFT", K_LEFT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_UP", K_UP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_RIGHT", K_RIGHT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_DOWN", K_DOWN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_PGUP", K_PGUP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_PGDN", K_PGDN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_END", K_END, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_MIDDLE", K_MIDDLE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_Print", K_Print, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_INS", K_INS, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_Menu", K_Menu, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_DEL", K_DEL, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_F1", K_F1, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_F2", K_F2, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_F3", K_F3, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_F4", K_F4, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_F5", K_F5, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_F6", K_F6, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_F7", K_F7, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_F8", K_F8, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_F9", K_F9, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_F10", K_F10, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_F11", K_F11, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_F12", K_F12, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_LSHIFT", K_LSHIFT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_RSHIFT", K_RSHIFT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_LCTRL", K_LCTRL, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_RCTRL", K_RCTRL, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_LALT", K_LALT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_RALT", K_RALT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_NUM", K_NUM, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_SCROLL", K_SCROLL, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_CAPS", K_CAPS, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_ccedilla", K_ccedilla, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_Ccedilla", K_Ccedilla, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_acute", K_acute, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_diaeresis", K_diaeresis, CONST_CS | CONST_PERSISTENT);

    /* These definitions are here for backward compatibility 
       and to simplify some key combination usage.
       But since IUP 3.9, modifiers can be combined with any key
       and they can be mixed together. */

    REGISTER_LONG_CONSTANT("K_sHOME", K_sHOME, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sUP", K_sUP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sPGUP", K_sPGUP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sLEFT", K_sLEFT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sMIDDLE", K_sMIDDLE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sRIGHT", K_sRIGHT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sEND", K_sEND, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sDOWN", K_sDOWN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sPGDN", K_sPGDN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sINS", K_sINS, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sDEL", K_sDEL, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sSP", K_sSP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sTAB", K_sTAB, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sCR", K_sCR, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sBS", K_sBS, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sPAUSE", K_sPAUSE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sESC", K_sESC, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sF1", K_sF1, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sF2", K_sF2, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sF3", K_sF3, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sF4", K_sF4, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sF5", K_sF5, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sF6", K_sF6, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sF7", K_sF7, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sF8", K_sF8, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sF9", K_sF9, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sF10", K_sF10, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sF11", K_sF11, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sF12", K_sF12, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sPrint", K_sPrint, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sMenu", K_sMenu, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cHOME", K_cHOME, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cUP", K_cUP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cPGUP", K_cPGUP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cLEFT", K_cLEFT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cMIDDLE", K_cMIDDLE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cRIGHT", K_cRIGHT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cEND", K_cEND, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cDOWN", K_cDOWN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cPGDN", K_cPGDN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cINS", K_cINS, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cDEL", K_cDEL, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cSP", K_cSP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cTAB", K_cTAB, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cCR", K_cCR, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cBS", K_cBS, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cPAUSE", K_cPAUSE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cESC", K_cESC, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cCcedilla", K_cCcedilla, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cF1", K_cF1, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cF2", K_cF2, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cF3", K_cF3, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cF4", K_cF4, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cF5", K_cF5, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cF6", K_cF6, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cF7", K_cF7, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cF8", K_cF8, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cF9", K_cF9, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cF10", K_cF10, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cF11", K_cF11, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cF12", K_cF12, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cPrint", K_cPrint, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cMenu", K_cMenu, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mHOME", K_mHOME, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mUP", K_mUP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mPGUP", K_mPGUP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mLEFT", K_mLEFT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mMIDDLE", K_mMIDDLE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mRIGHT", K_mRIGHT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mEND", K_mEND, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mDOWN", K_mDOWN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mPGDN", K_mPGDN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mINS", K_mINS, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mDEL", K_mDEL, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mSP", K_mSP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mTAB", K_mTAB, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mCR", K_mCR, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mBS", K_mBS, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mPAUSE", K_mPAUSE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mESC", K_mESC, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mCcedilla", K_mCcedilla, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mF1", K_mF1, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mF2", K_mF2, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mF3", K_mF3, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mF4", K_mF4, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mF5", K_mF5, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mF6", K_mF6, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mF7", K_mF7, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mF8", K_mF8, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mF9", K_mF9, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mF10", K_mF10, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mF11", K_mF11, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mF12", K_mF12, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mPrint", K_mPrint, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mMenu", K_mMenu, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yHOME", K_yHOME, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yUP", K_yUP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yPGUP", K_yPGUP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yLEFT", K_yLEFT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yMIDDLE", K_yMIDDLE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yRIGHT", K_yRIGHT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yEND", K_yEND, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yDOWN", K_yDOWN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yPGDN", K_yPGDN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yINS", K_yINS, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yDEL", K_yDEL, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_ySP", K_ySP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yTAB", K_yTAB, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yCR", K_yCR, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yBS", K_yBS, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yPAUSE", K_yPAUSE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yESC", K_yESC, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yCcedilla", K_yCcedilla, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yF1", K_yF1, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yF2", K_yF2, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yF3", K_yF3, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yF4", K_yF4, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yF5", K_yF5, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yF6", K_yF6, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yF7", K_yF7, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yF8", K_yF8, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yF9", K_yF9, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yF10", K_yF10, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yF11", K_yF11, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yF12", K_yF12, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yPrint", K_yPrint, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yMenu", K_yMenu, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sPlus", K_sPlus, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sComma", K_sComma, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sMinus", K_sMinus, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sPeriod", K_sPeriod, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sSlash", K_sSlash, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_sAsterisk", K_sAsterisk, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cA", K_cA, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cB", K_cB, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cC", K_cC, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cD", K_cD, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cE", K_cE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cF", K_cF, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cG", K_cG, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cH", K_cH, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cI", K_cI, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cJ", K_cJ, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cK", K_cK, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cL", K_cL, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cM", K_cM, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cN", K_cN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cO", K_cO, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cP", K_cP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cQ", K_cQ, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cR", K_cR, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cS", K_cS, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cT", K_cT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cU", K_cU, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cV", K_cV, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cW", K_cW, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cX", K_cX, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cY", K_cY, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cZ", K_cZ, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_c1", K_c1, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_c2", K_c2, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_c3", K_c3, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_c4", K_c4, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_c5", K_c5, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_c6", K_c6, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_c7", K_c7, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_c8", K_c8, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_c9", K_c9, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_c0", K_c0, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cPlus", K_cPlus, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cComma", K_cComma, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cMinus", K_cMinus, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cPeriod", K_cPeriod, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cSlash", K_cSlash, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cSemicolon", K_cSemicolon, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cEqual", K_cEqual, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cBracketleft", K_cBracketleft, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cBracketright", K_cBracketright, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cBackslash", K_cBackslash, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_cAsterisk", K_cAsterisk, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mA", K_mA, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mB", K_mB, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mC", K_mC, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mD", K_mD, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mE", K_mE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mF", K_mF, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mG", K_mG, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mH", K_mH, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mI", K_mI, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mJ", K_mJ, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mK", K_mK, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mL", K_mL, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mM", K_mM, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mN", K_mN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mO", K_mO, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mP", K_mP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mQ", K_mQ, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mR", K_mR, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mS", K_mS, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mT", K_mT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mU", K_mU, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mV", K_mV, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mW", K_mW, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mX", K_mX, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mY", K_mY, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mZ", K_mZ, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_m1", K_m1, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_m2", K_m2, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_m3", K_m3, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_m4", K_m4, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_m5", K_m5, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_m6", K_m6, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_m7", K_m7, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_m8", K_m8, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_m9", K_m9, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_m0", K_m0, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mPlus", K_mPlus, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mComma", K_mComma, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mMinus", K_mMinus, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mPeriod", K_mPeriod, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mSlash", K_mSlash, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mSemicolon", K_mSemicolon, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mEqual", K_mEqual, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mBracketleft", K_mBracketleft, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mBracketright", K_mBracketright, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mBackslash", K_mBackslash, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_mAsterisk", K_mAsterisk, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yA", K_yA, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yB", K_yB, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yC", K_yC, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yD", K_yD, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yE", K_yE, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yF", K_yF, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yG", K_yG, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yH", K_yH, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yI", K_yI, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yJ", K_yJ, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yK", K_yK, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yL", K_yL, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yM", K_yM, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yN", K_yN, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yO", K_yO, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yP", K_yP, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yQ", K_yQ, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yR", K_yR, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yS", K_yS, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yT", K_yT, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yU", K_yU, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yV", K_yV, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yW", K_yW, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yX", K_yX, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yY", K_yY, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yZ", K_yZ, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_y1", K_y1, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_y2", K_y2, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_y3", K_y3, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_y4", K_y4, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_y5", K_y5, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_y6", K_y6, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_y7", K_y7, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_y8", K_y8, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_y9", K_y9, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_y0", K_y0, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yPlus", K_yPlus, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yComma", K_yComma, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yMinus", K_yMinus, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yPeriod", K_yPeriod, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_ySlash", K_ySlash, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_ySemicolon", K_ySemicolon, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yEqual", K_yEqual, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yBracketleft", K_yBracketleft, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yBracketright", K_yBracketright, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yBackslash", K_yBackslash, CONST_CS | CONST_PERSISTENT);
    REGISTER_LONG_CONSTANT("K_yAsterisk", K_yAsterisk, CONST_CS | CONST_PERSISTENT);

	return SUCCESS;
}
/* }}} */

/* {{{ PHP_MSHUTDOWN_FUNCTION
 */
PHP_MSHUTDOWN_FUNCTION(iup)
{
	/* uncomment this line if you have INI entries
	UNREGISTER_INI_ENTRIES();
	*/
	return SUCCESS;
}
/* }}} */

/* Remove if there's nothing to do at request start */
/* {{{ PHP_RINIT_FUNCTION
 */
PHP_RINIT_FUNCTION(iup)
{
#if defined(COMPILE_DL_IUP) && defined(ZTS)
	ZEND_TSRMLS_CACHE_UPDATE();
#endif
	return SUCCESS;
}
/* }}} */

/* Remove if there's nothing to do at request end */
/* {{{ PHP_RSHUTDOWN_FUNCTION
 */
PHP_RSHUTDOWN_FUNCTION(iup)
{
	return SUCCESS;
}
/* }}} */

/* {{{ PHP_MINFO_FUNCTION
 */
PHP_MINFO_FUNCTION(iup)
{
	php_info_print_table_start();
	php_info_print_table_header(2, "iup support", "enabled");
	php_info_print_table_end();

	/* Remove comments if you have entries in php.ini
	DISPLAY_INI_ENTRIES();
	*/
}
/* }}} */

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupGetRGB, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupGetRGBA, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupGetRGBId, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupGetRGBId2, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupTextConvertLinColToPos, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupTextConvertPosToLinCol, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupGetColor, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupListDialog, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupDrawGetClipRect, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupDrawGetSize, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupDrawGetTextSize, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupDrawGetImageInfo, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupPlotGetSample, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupPlotGetSampleStr, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupPlotTransform, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupPlotTransformTo, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()


ZEND_BEGIN_ARG_INFO_EX(arginfo_IupPlotFindSample, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupPlotFindSegment, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(1)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupGetAllAttributes, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupGetAllNames, 0, 0, 1)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupGetAllDialogs, 0, 0, 1)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupGetAllClasses, 0, 0, 1)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupGetClassAttributes, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(0)
ZEND_END_ARG_INFO()

ZEND_BEGIN_ARG_INFO_EX(arginfo_IupGetClassCallbacks, 0, 0, 1)
    ZEND_ARG_PASS_INFO(0)
    ZEND_ARG_PASS_INFO(1)
    ZEND_ARG_PASS_INFO(0)
ZEND_END_ARG_INFO()

/* {{{ iup_functions[]
 *
 * Every user visible function must have an entry in iup_functions[].
 */
const zend_function_entry iup_functions[] = {
	PHP_FE(confirm_iup_compiled,	NULL)		/* For testing, remove later. */

    PHP_FE(IupDebug,  NULL)
    PHP_FE(IupOpen,  NULL)
    PHP_FE(IupClose,  NULL)
    PHP_FE(IupIsOpened,  NULL)
    PHP_FE(IupMainLoop,  NULL)
    PHP_FE(IupLoopStep,  NULL)
    PHP_FE(IupLoopStepWait,  NULL)
    PHP_FE(IupMainLoopLevel,  NULL)
    PHP_FE(IupImageLibOpen,  NULL)
    PHP_FE(IupFlush,  NULL)
    PHP_FE(IupExitLoop,  NULL)
    PHP_FE(IupPostMessage,  NULL)
    PHP_FE(IupRecordInput,  NULL)
    PHP_FE(IupPlayInput,  NULL)
    PHP_FE(IupUpdate,  NULL)
    PHP_FE(IupUpdateChildren,  NULL)
    PHP_FE(IupRedraw,  NULL)
    PHP_FE(IupRefresh,  NULL)
    PHP_FE(IupRefreshChildren,  NULL)
    PHP_FE(IupExecute,  NULL)
    PHP_FE(IupExecuteWait,  NULL)
    PHP_FE(IupHelp,  NULL)
    PHP_FE(IupLog,  NULL)
    PHP_FE(IupLoad,  NULL)
    PHP_FE(IupLoadBuffer,  NULL)
    PHP_FE(IupVersion,  NULL)
    PHP_FE(IupVersionDate,  NULL)
    PHP_FE(IupVersionNumber,  NULL)
    PHP_FE(IupVersionShow,  NULL)
    PHP_FE(IupSetLanguage,  NULL)
    PHP_FE(IupGetLanguage,  NULL)
    PHP_FE(IupSetLanguageString,  NULL)
    PHP_FE(IupStoreLanguageString,  NULL)
    PHP_FE(IupGetLanguageString,  NULL)
    PHP_FE(IupSetLanguagePack,  NULL)
    PHP_FE(IupDestroy,  NULL)
    PHP_FE(IupDetach,  NULL)
    PHP_FE(IupAppend,  NULL)
    PHP_FE(IupInsert,  NULL)
    PHP_FE(IupGetChild,  NULL)
    PHP_FE(IupGetChildPos,  NULL)
    PHP_FE(IupGetChildCount,  NULL)
    PHP_FE(IupGetNextChild,  NULL)
    PHP_FE(IupGetBrother,  NULL)
    PHP_FE(IupGetParent,  NULL)
    PHP_FE(IupGetDialog,  NULL)
    PHP_FE(IupGetDialogChild,  NULL)
    PHP_FE(IupReparent,  NULL)
    PHP_FE(IupPopup,  NULL)
    PHP_FE(IupShow,  NULL)
    PHP_FE(IupShowXY,  NULL)
    PHP_FE(IupHide,  NULL)
    PHP_FE(IupMap,  NULL)
    PHP_FE(IupUnmap,  NULL)
    PHP_FE(IupResetAttribute,  NULL)
    PHP_FE(IupGetAllAttributes,  arginfo_IupGetAllAttributes)
    PHP_FE(IupSetAtt,  NULL)
    PHP_FE(IupSetAttributes,  NULL)
    PHP_FE(IupGetAttributes,  NULL)
    PHP_FE(IupSetAttribute,  NULL)
    PHP_FE(IupSetStrAttribute,  NULL)
    PHP_FE(IupSetStrf,  NULL)
    PHP_FE(IupSetInt,  NULL)
    PHP_FE(IupSetFloat,  NULL)
    PHP_FE(IupSetDouble,  NULL)
    PHP_FE(IupSetRGB,  NULL)
    PHP_FE(IupSetRGBA,  NULL)
    PHP_FE(IupGetAttribute,  NULL)
    PHP_FE(IupGetInt,  NULL)
    PHP_FE(IupGetInt2,  NULL)
    PHP_FE(IupGetIntInt,  NULL)
    PHP_FE(IupGetFloat,  NULL)
    PHP_FE(IupGetDouble,  NULL)
    PHP_FE(IupGetRGB,  arginfo_IupGetRGB)
    PHP_FE(IupGetRGBA,  arginfo_IupGetRGBA)
    PHP_FE(IupSetAttributeId,  NULL)
    PHP_FE(IupSetStrAttributeId,  NULL)
    PHP_FE(IupSetStrfId,  NULL)
    PHP_FE(IupSetIntId,  NULL)
    PHP_FE(IupSetFloatId,  NULL)
    PHP_FE(IupSetDoubleId,  NULL)
    PHP_FE(IupSetRGBId,  NULL)
    PHP_FE(IupGetAttributeId,  NULL)
    PHP_FE(IupGetIntId,  NULL)
    PHP_FE(IupGetFloatId,  NULL)
    PHP_FE(IupGetDoubleId,  NULL)
    PHP_FE(IupGetRGBId,  arginfo_IupGetRGBId)
    PHP_FE(IupSetAttributeId2,  NULL)
    PHP_FE(IupSetStrAttributeId2,  NULL)
    PHP_FE(IupSetStrfId2,  NULL)
    PHP_FE(IupSetIntId2,  NULL)
    PHP_FE(IupSetFloatId2,  NULL)
    PHP_FE(IupSetDoubleId2,  NULL)
    PHP_FE(IupSetRGBId2,  NULL)
    PHP_FE(IupGetAttributeId2,  NULL)
    PHP_FE(IupGetIntId2,  NULL)
    PHP_FE(IupGetFloatId2,  NULL)
    PHP_FE(IupGetDoubleId2,  NULL)
    PHP_FE(IupGetRGBId2,  arginfo_IupGetRGBId2)
    PHP_FE(IupSetGlobal,  NULL)
    PHP_FE(IupSetStrGlobal,  NULL)
    PHP_FE(IupGetGlobal,  NULL)
    PHP_FE(IupSetFocus,  NULL)
    PHP_FE(IupGetFocus,  NULL)
    PHP_FE(IupPreviousField,  NULL)
    PHP_FE(IupNextField,  NULL)
    PHP_FE(IupSetCallback,  NULL)
    PHP_FE(IupGetCallback,  NULL)
    PHP_FE(IupSetCallbacks,  NULL)
    PHP_FE(IupGetFunction,  NULL)
    PHP_FE(IupSetFunction,  NULL)
    PHP_FE(IupGetHandle,  NULL)
    PHP_FE(IupSetHandle,  NULL)
    PHP_FE(IupGetAllNames,  arginfo_IupGetAllNames)
    PHP_FE(IupGetAllDialogs,  arginfo_IupGetAllDialogs)
    PHP_FE(IupGetName,  NULL)
    PHP_FE(IupSetAttributeHandle,  NULL)
    PHP_FE(IupGetAttributeHandle,  NULL)
    PHP_FE(IupSetAttributeHandleId,  NULL)
    PHP_FE(IupGetAttributeHandleId,  NULL)
    PHP_FE(IupSetAttributeHandleId2,  NULL)
    PHP_FE(IupGetAttributeHandleId2,  NULL)
    PHP_FE(IupGetClassName,  NULL)
    PHP_FE(IupGetClassType,  NULL)
    PHP_FE(IupGetAllClasses,  arginfo_IupGetAllClasses)
    PHP_FE(IupGetClassAttributes,  arginfo_IupGetClassAttributes)
    PHP_FE(IupGetClassCallbacks,  arginfo_IupGetClassCallbacks)
    PHP_FE(IupSaveClassAttributes,  NULL)
    PHP_FE(IupCopyClassAttributes,  NULL)
    PHP_FE(IupSetClassDefaultAttribute,  NULL)
    PHP_FE(IupClassMatch,  NULL)
    PHP_FE(IupCreatek,  NULL)
    PHP_FE(IupCreatev,  NULL)
    PHP_FE(IupCreatep,  NULL)
    PHP_FE(IupFill,  NULL)
    PHP_FE(IupSpace,  NULL)
    PHP_FE(IupRadio,  NULL)
    PHP_FE(IupVbox,  NULL)
    PHP_FE(IupVboxv,  NULL)
    PHP_FE(IupZbox,  NULL)
    PHP_FE(IupZboxv,  NULL)
    PHP_FE(IupHbox,  NULL)
    PHP_FE(IupHboxv,  NULL)
    PHP_FE(IupNormalizer,  NULL)
    PHP_FE(IupNormalizerv,  NULL)
    PHP_FE(IupCbox,  NULL)
    PHP_FE(IupCboxv,  NULL)
    PHP_FE(IupSbox,  NULL)
    PHP_FE(IupSplit,  NULL)
    PHP_FE(IupScrollBox,  NULL)
    PHP_FE(IupFlatScrollBox,  NULL)
    PHP_FE(IupGridBox,  NULL)
    PHP_FE(IupGridBoxv,  NULL)
    PHP_FE(IupExpander,  NULL)
    PHP_FE(IupDetachBox,  NULL)
    PHP_FE(IupBackgroundBox,  NULL)
    PHP_FE(IupFrame,  NULL)
    PHP_FE(IupFlatFrame,  NULL)
    PHP_FE(IupImage,  NULL)
    PHP_FE(IupImageRGB,  NULL)
    PHP_FE(IupImageRGBA,  NULL)
    PHP_FE(IupItem,  NULL)
    PHP_FE(IupSubmenu,  NULL)
    PHP_FE(IupSeparator,  NULL)
    PHP_FE(IupMenu,  NULL)
    PHP_FE(IupMenuv,  NULL)
    PHP_FE(IupButton,  NULL)
    PHP_FE(IupFlatButton,  NULL)
    PHP_FE(IupFlatToggle,  NULL)
    PHP_FE(IupDropButton,  NULL)
    PHP_FE(IupFlatLabel,  NULL)
    PHP_FE(IupFlatSeparator,  NULL)
    PHP_FE(IupCanvas,  NULL)
    PHP_FE(IupDialog,  NULL)
    PHP_FE(IupUser,  NULL)
    PHP_FE(IupThread,  NULL)
    PHP_FE(IupLabel,  NULL)
    PHP_FE(IupList,  NULL)
    PHP_FE(IupFlatList,  NULL)
    PHP_FE(IupText,  NULL)
    PHP_FE(IupMultiLine,  NULL)
    PHP_FE(IupToggle,  NULL)
    PHP_FE(IupTimer,  NULL)
    PHP_FE(IupClipboard,  NULL)
    PHP_FE(IupProgressBar,  NULL)
    PHP_FE(IupVal,  NULL)
    PHP_FE(IupFlatVal,  NULL)
    PHP_FE(IupFlatTree,  NULL)
    PHP_FE(IupTabs,  NULL)
    PHP_FE(IupTabsv,  NULL)
    PHP_FE(IupFlatTabs,  NULL)
    PHP_FE(IupFlatTabsv,  NULL)
    PHP_FE(IupTree,  NULL)
    PHP_FE(IupLink,  NULL)
    PHP_FE(IupAnimatedLabel,  NULL)
    PHP_FE(IupDatePick,  NULL)
    PHP_FE(IupCalendar,  NULL)
    PHP_FE(IupColorbar,  NULL)
    PHP_FE(IupGauge,  NULL)
    PHP_FE(IupDial,  NULL)
    PHP_FE(IupColorBrowser,  NULL)
    PHP_FE(IupSpin,  NULL)
    PHP_FE(IupSpinbox,  NULL)
    PHP_FE(IupStringCompare,  NULL)
    PHP_FE(IupSaveImageAsText,  NULL)
    PHP_FE(IupImageGetHandle,  NULL)
    PHP_FE(IupTextConvertLinColToPos,  arginfo_IupTextConvertLinColToPos)
    PHP_FE(IupTextConvertPosToLinCol,  arginfo_IupTextConvertPosToLinCol)
    PHP_FE(IupConvertXYToPos,  NULL)
    PHP_FE(IupStoreGlobal,  NULL)
    PHP_FE(IupStoreAttribute,  NULL)
    PHP_FE(IupSetfAttribute,  NULL)
    PHP_FE(IupStoreAttributeId,  NULL)
    PHP_FE(IupSetfAttributeId,  NULL)
    PHP_FE(IupStoreAttributeId2,  NULL)
    PHP_FE(IupSetfAttributeId2,  NULL)
    PHP_FE(IupTreeSetUserId,  NULL)
    PHP_FE(IupTreeGetUserId,  NULL)
    PHP_FE(IupTreeGetId,  NULL)
    PHP_FE(IupTreeSetAttributeHandle,  NULL)
    PHP_FE(IupFileDlg,  NULL)
    PHP_FE(IupMessageDlg,  NULL)
    PHP_FE(IupColorDlg,  NULL)
    PHP_FE(IupFontDlg,  NULL)
    PHP_FE(IupProgressDlg,  NULL)
    PHP_FE(IupGetFile,  NULL)
    PHP_FE(IupMessage,  NULL)
    PHP_FE(IupMessagef,  NULL)
    PHP_FE(IupMessageError,  NULL)
    PHP_FE(IupMessageAlarm,  NULL)
    PHP_FE(IupAlarm,  NULL)
    PHP_FE(IupScanf,  NULL)
    PHP_FE(IupListDialog,  NULL)
    PHP_FE(IupGetText,  NULL)
    PHP_FE(IupGetColor,  arginfo_IupGetColor)
    PHP_FE(IupGetParam,  NULL)
    PHP_FE(IupGetParamv,  NULL)
    PHP_FE(IupParam,  NULL)
    PHP_FE(IupParamBox,  NULL)
    PHP_FE(IupParamBoxv,  NULL)
    PHP_FE(IupLayoutDialog,  NULL)
    PHP_FE(IupElementPropertiesDialog,  NULL)
    PHP_FE(IupGlobalsDialog,  NULL)
    PHP_FE(IupClassInfoDialog,  NULL)
    

    // more
    PHP_FE(IupConfig, NULL)
    PHP_FE(IupConfigLoad, NULL)
    PHP_FE(IupConfigSave, NULL)
    PHP_FE(IupConfigSetVariableStr, NULL)
    PHP_FE(IupConfigSetVariableStrId, NULL)
    PHP_FE(IupConfigSetVariableInt, NULL)
    PHP_FE(IupConfigSetVariableIntId, NULL)
    PHP_FE(IupConfigSetVariableDouble, NULL)
    PHP_FE(IupConfigSetVariableDoubleId, NULL)
    PHP_FE(IupConfigGetVariableStr, NULL)
    PHP_FE(IupConfigGetVariableStrId, NULL)
    PHP_FE(IupConfigGetVariableInt, NULL)
    PHP_FE(IupConfigGetVariableIntId, NULL)
    PHP_FE(IupConfigGetVariableDouble, NULL)
    PHP_FE(IupConfigGetVariableDoubleId, NULL)
    PHP_FE(IupConfigGetVariableStrDef, NULL)
    PHP_FE(IupConfigGetVariableStrIdDef, NULL)
    PHP_FE(IupConfigGetVariableIntDef, NULL)
    PHP_FE(IupConfigGetVariableIntIdDef, NULL)
    PHP_FE(IupConfigGetVariableDoubleDef, NULL)
    PHP_FE(IupConfigGetVariableDoubleIdDef, NULL)
    PHP_FE(IupConfigCopy, NULL)
    PHP_FE(IupConfigSetListVariable, NULL)
    PHP_FE(IupConfigRecentInit, NULL)
    PHP_FE(IupConfigRecentUpdate, NULL)
    PHP_FE(IupConfigDialogShow, NULL)
    PHP_FE(IupConfigDialogClosed, NULL)

#ifdef PHP_IUP_SCINTILLA
    PHP_FE(IupScintillaOpen, NULL)
    PHP_FE(IupScintilla, NULL)
    PHP_FE(IupScintillaDlg, NULL)
#endif

    PHP_FE(IupWebBrowserOpen, NULL)
    PHP_FE(IupWebBrowser, NULL)
    // PHP_FE(IupTuioOpen, NULL)
    // PHP_FE(IupTuioClient, NULL)
    PHP_FE(IupOleControlOpen, NULL)
    PHP_FE(IupOleControl, NULL)
    
    PHP_FE(IupLoadImage, NULL)
    PHP_FE(IupSaveImage, NULL)
    PHP_FE(IupLoadAnimation, NULL)
    PHP_FE(IupLoadAnimationFrames, NULL)
    PHP_FE(IupGetNativeHandleImage, NULL)
    PHP_FE(IupGetImageNativeHandle, NULL)
    PHP_FE(IupImageFromImImage, NULL)
    PHP_FE(IupImageToImImage, NULL)

    PHP_FE(IupDrawBegin, NULL)
    PHP_FE(IupDrawEnd, NULL)
    PHP_FE(IupDrawSetClipRect, NULL)
    PHP_FE(IupDrawGetClipRect, arginfo_IupDrawGetClipRect)
    PHP_FE(IupDrawResetClip, NULL)
    PHP_FE(IupDrawParentBackground, NULL)
    PHP_FE(IupDrawLine, NULL)
    PHP_FE(IupDrawRectangle, NULL)
    PHP_FE(IupDrawArc, NULL)
    PHP_FE(IupDrawPolygon, NULL)
    PHP_FE(IupDrawText, NULL)
    PHP_FE(IupDrawImage, NULL)
    PHP_FE(IupDrawSelectRect, NULL)
    PHP_FE(IupDrawFocusRect, NULL)
    PHP_FE(IupDrawGetSize, arginfo_IupDrawGetSize)
    PHP_FE(IupDrawGetTextSize, arginfo_IupDrawGetTextSize)
    PHP_FE(IupDrawGetImageInfo, arginfo_IupDrawGetImageInfo)

    PHP_FE(IupControlsOpen, NULL)
    PHP_FE(IupCells, NULL)
    PHP_FE(IupMatrix, NULL)
    PHP_FE(IupMatrixList, NULL)
    PHP_FE(IupMatrixEx, NULL)
    PHP_FE(IupMatrixSetFormula, NULL)
    PHP_FE(IupMatrixSetDynamic, NULL)

    PHP_FE(IupPlotOpen, NULL)
    PHP_FE(IupPlot, NULL)
    PHP_FE(IupPlotBegin, NULL)
    PHP_FE(IupPlotAdd, NULL)
    PHP_FE(IupPlotAddStr, NULL)
    PHP_FE(IupPlotAddSegment, NULL)
    PHP_FE(IupPlotEnd, NULL)
    PHP_FE(IupPlotLoadData, NULL)
    PHP_FE(IupPlotSetFormula, NULL)
    PHP_FE(IupPlotInsert, NULL)
    PHP_FE(IupPlotInsertStr, NULL)
    PHP_FE(IupPlotInsertSegment, NULL)
    PHP_FE(IupPlotInsertStrSamples, NULL)
    PHP_FE(IupPlotInsertSamples, NULL)
    PHP_FE(IupPlotAddSamples, NULL)
    PHP_FE(IupPlotAddStrSamples, NULL)
    PHP_FE(IupPlotGetSample, arginfo_IupPlotGetSample)
    PHP_FE(IupPlotGetSampleStr, arginfo_IupPlotGetSampleStr)
    PHP_FE(IupPlotGetSampleSelection, NULL)
    PHP_FE(IupPlotGetSampleExtra, NULL)
    PHP_FE(IupPlotSetSample, NULL)
    PHP_FE(IupPlotSetSampleStr, NULL)
    PHP_FE(IupPlotSetSampleSelection, NULL)
    PHP_FE(IupPlotSetSampleExtra, NULL)
    PHP_FE(IupPlotTransform, arginfo_IupPlotTransform)
    PHP_FE(IupPlotTransformTo, arginfo_IupPlotTransformTo)
    PHP_FE(IupPlotFindSample, arginfo_IupPlotFindSample)
    PHP_FE(IupPlotFindSegment, arginfo_IupPlotFindSegment)

	PHP_FE_END	/* Must be the last line in iup_functions[] */
};
/* }}} */

/* {{{ iup_module_entry
 */
zend_module_entry iup_module_entry = {
	STANDARD_MODULE_HEADER,
	"iup",
	iup_functions,
	PHP_MINIT(iup),
	PHP_MSHUTDOWN(iup),
	PHP_RINIT(iup),		/* Replace with NULL if there's nothing to do at request start */
	PHP_RSHUTDOWN(iup),	/* Replace with NULL if there's nothing to do at request end */
	PHP_MINFO(iup),
	PHP_IUP_VERSION,
	STANDARD_MODULE_PROPERTIES
};
/* }}} */

#ifdef COMPILE_DL_IUP
#ifdef ZTS
ZEND_TSRMLS_CACHE_DEFINE()
#endif
ZEND_GET_MODULE(iup)
#endif

/*
 * Local variables:
 * tab-width: 4
 * c-basic-offset: 4
 * End:
 * vim600: noet sw=4 ts=4 fdm=marker
 * vim<600: noet sw=4 ts=4
 */
